“Push technology” is a type of Internet-based communication in which information transmission is initiated by a “publisher” or a server computing device (“server”). It is contrasted with “pull technology” in which the request for information transmission is initiated by a receiving client computing device (“client”). Services with push technology can offer to clients push services. Push services are sometimes based upon information preferences expressed in advance. For example, a client might subscribe to one or more information “channels.” The server associated with the channels can then push information to the client when new content associated with the channel becomes available. Some push services also identify users that may be interested in receiving information regarding particular channels based on an observed user behavior or stated interests of the users. For example, a social networking application can infer from user interactions with a social network service, such as posts, pictures, comments, posts or pages liked by the users, geographical location, age, sex marital status of the users, a channel the users may be interested in and send content from the channel as notifications to clients associated with those users.
Regardless of how the users are identified for receiving the notifications, the server has to maintain a list of the users who are interested in a specific channel. For example, the server may have to store user identifications (“IDs”) of all users interested in a particular channel in a data structure. Maintaining such lists of users can be resource intensive, e.g., especially in a social networking application used by many millions or even billions. For example, such lists can consume a significantly large storage space. If the users have installed a mobile application (“app”) of the social networking application at multiple clients, the server may also have to store client device information for each of these clients in the lists, which further increase the storage space consumed.
When a notification is to be sent to the users interested in a particular channel, the server may have to retrieve the user IDs, and in some cases client IDs if the notifications have to be sent to only some of the clients associated with the users. Obtaining the IDs from such large lists can be resource intensive, and therefore can cause a delay in sending the notifications to the users.
Further, the lists may have to be continually updated to reflect changes in user behavior or subscriptions, which can also consume significant computing resources. Some or all of the above problems may increase exponentially with the number of lists that are to be maintained for different users that may be interested in different channels.